package pencil.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;



import org.apache.catalina.startup.HomesUserDatabase;
import org.springframework.orm.ibatis.SqlMapClientTemplate;

import pencil.to.cuttingMachineTO;
import pencil.to.factoryMaterial1TO;

import pencil.to.blackSimTO;
import pencil.to.factoryMaterial2TO;
import pencil.to.holeMachineTO;
import pencil.to.holeNamuTO;
import pencil.to.insertMachineTO;
import pencil.to.paintingMachineTO;
import pencil.to.pencilTO;
import pencil.to.pressingMachineTO;
import pencil.to.rostingMachineTO;

import pencil.to.mixMachineTO;



public class pencil_dao {

	private SqlMapClientTemplate sqlMap;
	public pencil_dao(SqlMapClientTemplate sqlMap){
		this.sqlMap = sqlMap;
	}
	
	public factoryMaterial1TO getMeterial() {
		return (factoryMaterial1TO)sqlMap.queryForObject("getMeterial");
		//1반죽기계에 사용될 재료값을 가지고 온다. 최신 값만 퍼온다.
	}
	public void insertSetMeterial(factoryMaterial1TO fto) throws SQLException{
		sqlMap.insert("insertSetMeterial", fto);		
		//1반죽기계에 사용될 재료가 없을때 재료를 주문한다 즉 인서트
	}
	

//	나무창고에 나무 입고
	public void insertNamuStore(factoryMaterial2TO fto2) throws SQLException{
		sqlMap.insert("insertNamuStore", fto2);		
	}
	
//	나무창고에서 홈을 팔 나무들을 가져오기 위해 select
	public factoryMaterial2TO getNamuStore() throws SQLException{
		return (factoryMaterial2TO) sqlMap.queryForObject("selectNamuStore");
	}
	
//	홈파는 머신에서 정보가져오기
	public holeMachineTO selectHoleMInfo() throws SQLException{
		return (holeMachineTO) sqlMap.queryForObject("selectHoleMInfo");
	}
	
//	나무 홈깍는 기계 기록 넣기
	public void insertHoleMInfo(holeMachineTO hmto) throws SQLException{
		sqlMap.insert("insertHoleMInfo",hmto);
	}
	
	
//	연필심들으 연필심 창고에 입고
	public void insertblackSim(blackSimTO bsto) throws SQLException{
		sqlMap.insert("insertblackSim", bsto);		
	}
	
//	창고에서 연필심들을 가져오기 위해 select
	public blackSimTO selectblackSim() throws SQLException{
		return (blackSimTO) sqlMap.queryForObject("selectblackSim");
	}
	
	
	

//	홈판 나무판들으 나무창고에 입고
	public void insertHoleNamu(holeNamuTO hnto) throws SQLException{
		sqlMap.insert("insertHoleNamu", hnto);		
	}
	
//	창고에서 홈파인 나무판들을 가져오기 위해 select
	public holeNamuTO selectHoleNamu() throws SQLException{
		return (holeNamuTO) sqlMap.queryForObject("selectHoleNamu");
	}
	
	
	

//	압출 기계 기록 넣기
	public void insertPressingMInfo(pressingMachineTO pmto) throws SQLException{
		sqlMap.insert("insertPressingMInfo",pmto);
	}
//	로스팅 기계 기록 넣기
	public void insertRostingMInfo(rostingMachineTO rmto) throws SQLException{
		sqlMap.insert("insertRostingMInfo",rmto);
	}
	
	
	
	
//	나무판에 연필심 넣는 기계 dao
	public void insertInsertMInfo(insertMachineTO imto) throws SQLException{
		sqlMap.insert("insertInsertMInfo",imto);
	}
	
	public insertMachineTO selectInsertMInfo() throws SQLException{
		return (insertMachineTO) sqlMap.queryForObject("selectInsertMInfo");
	}
	
	
//	연필 모양 깍는 기계 dao
	public cuttingMachineTO selectCuttingMInfo() throws SQLException{
		return (cuttingMachineTO) sqlMap.queryForObject("selectCuttingMInfo");
	}

	public void insertCuttingMInfo(cuttingMachineTO cmto) throws SQLException{
		sqlMap.insert("insertCuttingMInfo",cmto);
	}
	
	
	
//	연필 페인팅 기계 dao
	public void insertPaintingMInfo(paintingMachineTO pmto) throws SQLException{
		sqlMap.insert("insertPaintingMInfo",pmto);
	}
	
	public paintingMachineTO selectPaintingMInfo() throws SQLException{
		return (paintingMachineTO) sqlMap.queryForObject("selectPaintingMInfo");
	}
	
	
//	완성된 연필 dao
	
	public void insertPencil(pencilTO pto) throws SQLException{
		sqlMap.insert("insertPencil",pto);
	}
	
	public pencilTO selectPencil() throws SQLException{
		return (pencilTO) sqlMap.queryForObject("selectPencil");
	}
	
	

	//1반죽기계의 정보
	public mixMachineTO selectMixMachineInfo() {
		return (mixMachineTO) sqlMap.queryForObject("selectMixMachineInfo");
	}
	public void insertMixMachineInfo(mixMachineTO mmto){
		sqlMap.insert("insertMixMachineInfo",mmto);
	}

	
	public List<mixMachineTO> selectMixMachineInfoReport(int num) {
		 List<mixMachineTO>list= sqlMap.queryForList("selectMixMachineInfoReport",num);
		return list;
	}

	public ArrayList<factoryMaterial1TO> selectMeterialReport(int stratMeterialNum) {
		 ArrayList<factoryMaterial1TO>list=(ArrayList<factoryMaterial1TO>) sqlMap.queryForList("selectMeterialReport",stratMeterialNum );
		return list;
	}
	
	

	/*
	public int udateSetMeterial(String state) throws SQLException{
		Object obj =sqlMap.update("udateSetMeterial",state);
		return (int)obj;
		//창고의 입고/출고/주문 상태를 업데이트 한다.
	}
	*/
	
	
	
	
	/*
	 * 
	//high_category_id로 음식 분류 select
	public ArrayList selectLowCategoryById(String h_id) throws SQLException{
		return (ArrayList)sqlMap.queryForList("selectLowCategoryById",h_id);
	}
	
	//모든 음식 분류 select
	public ArrayList selectLowCategory() throws SQLException{
		return (ArrayList)sqlMap.queryForList("selectLowCategory");
	}
	
	//low_category_id로 레시피 정보 검색 select
	public ArrayList<recipeTO> selectRecipeByLowCategoryId(String id , int page) throws SQLException{
		HashMap map = new HashMap();
		map.put("contentPerPage", recipe_Utilities.CONTENT_PER_PAGE);
		map.put("page", page);
		map.put("id", id);
		return (ArrayList<recipeTO>)sqlMap.queryForList("selectRecipeByL_id", map);
	}
	
	//id로 레시피 정보 검색 select
	public recipeTO selectRecipeById(String id) throws SQLException{
		return (recipeTO)sqlMap.queryForObject("selectRecipeById", id);
	}
	
	//재료이름으로 재료테이블에서 중복 검사
	public materialTO selectMaterialByName(String name) throws SQLException{
		return (materialTO) sqlMap.queryForObject("selectMaterialByName",name);
	}
	
	//모든 재료 검색
	public ArrayList selectMaterial() throws SQLException{
		return (ArrayList)sqlMap.queryForList("selectMaterialInfo");
	}
	
	//레시피,재료테이블 레시피 아이디,재료 아이디로 중복검사 select
	public HashMap selectR_M_byName(String r_id,String m_id) throws SQLException{
		HashMap map = new HashMap();
		map.put("r_id", r_id);
		map.put("m_id", m_id);
		return (HashMap)sqlMap.queryForObject("selectR_M_byName",map);
	}
	
	//재료,마켓 테이블 재료 아이디,마켓 아이디로 중복검사 select
	public HashMap selectM_M_byName(String mt_id,String mk_id) throws SQLException{
		HashMap map = new HashMap();
		map.put("mt_id", mt_id);
		map.put("mk_id", mk_id);
		return (HashMap)sqlMap.queryForObject("selectM_M_byName",map);
	}
	
	//레시피 아이디로 레시피에 해당하는 재료정보들 가져오기
	public ArrayList<materialTO> selectR_M_ByRecipeId(String r_id)throws SQLException{
		return (ArrayList<materialTO>) sqlMap.queryForList("selectR_M_ByRecipeId",r_id);
	}
	
	 */
	

}
